事件推送网关: “让基础设施建设动起来”
读完需 6 分钟
速读需 3 分钟
《事件推送网关:让cmdb告别“花瓶”》自发起至今已两月有余,在此期间我们从无到有对cmdb的事件推送进行了充分的摸索,不断的踩坑填坑,现已基本实现了以下功能:
cmdb和zabbix同步,以“业务_集群_模块”的分组规则进行创建、更新、删除同步;主机创建、模板绑定、删除,代替zabbix的被动的自动发现或自动注册,掌握一定的主动性;
cmdb和jumpserver同步,按“/业务/集群/模块”的节点规则适配jumpserver的树形结构,对节点进行创建、更新、删除同步;资产的分组更新、删除;
基于cmdb,我们对基础设施的管理有了依据,事件推送网关保证了基础设置的有序流动,我们可以抽出更多的时间专注于上层的需求建设。
需求
cmdb和zabbix、jumpserver等系统隔离,资产分组无法保持一致,需要花费大量的精力去维护;
zabbix告警无法关联业务,通过cmdb的业务拓扑为zabbix提供分组依据的同时,告警信息关联业务拓扑来展示,帮助运维快速定位系统;
jumpserver资产分配无法关联业务,通过cmdb的业务拓扑为zabbix提供分组依据,jumpserer web端只负责权限分配;
系统隔离是一直是运维管理的一大难题,统一的esb总线来适配所有系统是不现实的,因此我们希望通过事件推送网关来间接打通。
解决方案
1.cmdb事件推送
蓝鲸cmdb原生支持主机业务(资源池、主机)、业务拓扑(集群、拓扑)、组织架构(业务)等内容的新增、编辑、删除动作,触发回调自行开发的事件推送网关(gateway);
2.事件推送网关(gateway)
gateway接收蓝鲸cmdb事件推送的POST请求,合并请求后调用zabbix、jumpserver等系统的API,实现资产分组、创建,主机转移等操作;
3.cmdb触发规则
cmdb的触发规则主要分为以下几类:
业务的创建、更新、删除
# 业务触发规则下的参数
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'biz'}
{'action': 'delete', 'obj_type': 'biz'}
集群的创建、更新、删除
# 集群触发规则下的参数
{'action': 'create', 'obj_type': 'set'}
{'action': 'update', 'obj_type': 'set'}
{'action': 'delete', 'obj_type': 'set'}
模块的创建、更新、删除
# 模块触发规则下的参数
{'action': 'create', 'obj_type': 'module'}
{'action': 'update', 'obj_type': 'module'}
{'action': 'delete', 'obj_type': 'module'}
主机转移触发主机标识更新
# 主机转移触发的主机标识更新规则下的参数下
{'action': 'update', 'obj_type': 'hostidentifier'}
注意:业务、集群、模块的更新操作,会自动触发主机标识更新,为什么呢?
因为主机标识更新是最小的原子操作,业务、集群、模块一旦更新,所有的主机的分组信息都需要做出一致性改变。因此,最终触发的操作如下:
# 业务更新
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'hostidentifier'}
# 集群更新
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'hostidentifier'}
# 模块更新
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'hostidentifier'}
考虑到cmdb事件推送POST的参数格式的多样性,给gateway解析参数带来了一定的复杂度,在此我们特定义了一下cmdb触发规则:
新建业务、集群、模块操作不会进行同步,只有当主机转移至相关模块下才会进行同时新建业务、集群、模块,以减少重复性操作;
删除业务、集群、模块、主机进行同步;
更新业务、集群、模块进行同步;
4.zabbix同步逻辑
5.jumpserver同步逻辑
与Zabbix不同的是,Jumpserver没有创建主机操作,因为默认情况下《蓝鲸实现多环境vsphere虚拟机交付》中会自动在jumpserver中创建主机。通过这一流程,我们默认所有的主机已经在jumpserver存在了。
总结
在没有cmdb之前,我们的基础设施管理是无序的,但是这也并不意味着有了cmdb就能将其管理的井然有序。因此,我认为最主要的核心思想还是基于cmdb,让基础设施在各平台有效的流转起来,而不是让其真正成为一个“花瓶”。
运维思索:cmdb打通zabbix、jumpserver探索
你与世界
只差一个
公众号